package example1;

import java.math.BigDecimal;

/**
 * <h3>designPattern</h3>
 * <p>策略上下文</p>
 * <p>调用方必须首先创建一个DiscountContext，并指定一个策略（或者使用默认策略），即可获得折扣后的价格</p>
 * @author : zhang.bw
 * @date : 2020-06-04 17:44
 **/
public class DiscountContext {
	// 默认持有普通用户策略
	private DiscountStrategy strategy = new UserDiscountStrategy();

	// 允许客户端设置新策略
	public void setStrategy(DiscountStrategy strategy) {
		this.strategy = strategy;
	}

	// 调用各自策略业务
	public BigDecimal calculatePrice(BigDecimal total) {
		return total.subtract(this.strategy.getDiscount(total)).setScale(2);
	}
}
